Technical Field
The present invention relates to analyzing tenant-specific data.
Description of Related Art
As it is generally known, “cloud computing” typically refers to the use of remotely hosted resources to provide services to customers over one or more networks such as the Internet. Resources made available to customers are typically virtualized and dynamically scalable. Cloud computing services may include any specific type of application. Some cloud computing services are, for example, provided to customers through client software such as a Web browser. The software and data used to support cloud computing services are located on remote servers owned by a cloud computing service provider. Customers consuming services offered through a cloud computing platform need not own the physical infrastructure hosting the actual service, and may accordingly avoid capital expenditure on hardware systems by paying only for the service resources they use, and/or a subscription fee. From a service provider's standpoint, the sharing of computing resources across multiple customers (i.e., “tenants”) improves resource utilization. Use of the cloud computing service model has been growing due to the increasing availability of high bandwidth communication, making it possible to obtain response times from remotely hosted cloud-based services similar to those of services that are locally hosted.
In some cases, cloud computing infrastructures may include one or more servers and/or data storage systems that may be used to provide a service to a given customer. A server or data storage system, for example, may be used in providing a given customer with data storage service, e.g., that the customer can access from the customer's own servers. In other cases, cloud computing infrastructures often use virtual machines to provide services to customers. A virtual machine is a completely software-based implementation of a computer system that executes programs like an actual computer system. One or more virtual machines may be used to provide a service to a given customer, with additional virtual machines being dynamically instantiated and/or allocated as customers are added and/or existing customer requirements change. Each virtual machine may represent all the components of a complete system to the program code running on it, including virtualized representations of processors, memory, networking, storage and/or BIOS (Basic Input/Output System). Virtual machines can accordingly run unmodified application processes and/or operating systems. Program code running on a given virtual machine executes using only virtual resources and abstractions dedicated to that virtual machine. As a result of such “encapsulation”, a program running in one virtual machine is completely isolated from programs running on other virtual machines. However, the virtual machines may be running on the same underlying hardware. In the context of cloud computing, customer-specific virtual machines can be employed to provide secure and reliable separation of code and data used to deliver services to different customers.
A virtual machine monitor manages the allocation of physical resources for the virtual machines executing in the virtual environment in a way that maintains code and data isolation between virtual machines. Physical resources that are allocated to the virtual machines include processor, memory, and other physical resources. In addition to physical resource virtualization and allocation, the virtual machine monitor may also provide virtual machines with other specific services, such as transport services enabling communication between virtual machines.
High bandwidth and virtualization may be utilized to create a multi-tenant cloud environment that provides and maintains access for one or more tenants to a shared back-end storage infrastructure. How the back-end storage infrastructure resources are allocated and used depends on the particular implementation.